using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ITS.Core.Domain.PageContents;
using ITS.DAL.DynamicContent;
using ITS.Factory;

namespace ITS.Services.PageContents
{
    public class PageContentService : IPageContentService
    {
        private readonly IPageContentRepository _repository;

        public PageContentService()
        {
            _repository = NinjectRepositoriesFactory.Get<IPageContentRepository>();
        }

        public PageContentDescription GetPageContentDescriptionByNameInCurrentCulture(string strName)
        {
            return _repository.GetPageContentDescriptionByNameInCurrentCulture(strName);
        }

        public PageContentDescription GetPageContentDescriptionByID(int iID)
        {
            return _repository.GetPageContentDescriptionByID(iID);
        }

        public PageContentDescription GetPageContentDescription(string strName, string culture)
        {
            return _repository.GetPageContentDescription(strName, culture);
        }

        public IQueryable<PageContentDescription> GetAllDescriptions()
        {
            return _repository.GetAllDescriptions();
        }

        public IQueryable<PageContentDescription> GetDescriptionsByCategoryID(int ID)
        {
            return _repository.GetDescriptionsByCategoryIdInCurrentCulture(ID);
        }


        public PageContentDescription GetDescriptionByID(int DescriptionID)
        {
            return _repository.GetDescriptionByID(DescriptionID);
        }


        public void Save()
        {
            _repository.Save();
        }


        public IList<PageContent> GetAllPageContents()
        {
            return _repository.GetAllPageContents();
        }


        public PageContent GetPageContentByID(int PageContentID)
        {
            return _repository.GetPageContentByID(PageContentID);
        }


        public IList<PageContentDescription> GetDescriptionsByPageContentID(int PageContentID)
        {
            return _repository.GetDescriptionsByPageContentID(PageContentID);
        }


        public IList<PageContentCategory> GetAllPageContentCategories()
        {
            return _repository.GetAllPageContentCategories();
        }


        public IList<PageContent> GetPageContentsByCategoryID(int CategoryID)
        {
            return _repository.GetPageContentsByCategoryID(CategoryID);
        }


        public IList<PageContentImage> GetPageContentImagesByPageContentID(int PageContentID)
        {
            return _repository.GetPageContentImagesByPageContentID(PageContentID);
        }


        public void AddPageContentImage(PageContentImage image, int PageContentID)
        {
            _repository.AddPageContentImage(image, PageContentID);
        }


        public PageContentImage GetPageContentImageByID(Guid ImageID)
        {
            return _repository.GetPageContentImageByID(ImageID);
        }


        public void DelelePageContentImage(Guid ImageID)
        {
            _repository.DelelePageContentImage(ImageID);
        }
    }
}
